package com.desksoft.ecommerce.service.interf.mall;

import java.util.List;
import java.util.Map;

import com.desksoft.ecommerce.entity.logistics.dto.Clientinfo;
import com.desksoft.ecommerce.util.result.ServiceResult;
import com.desksoft.ecommerce.vo.logistics.RegistryQryVO;
import com.desksoft.ecommerce.vo.logistics.RegistryVO;
import com.desksoft.ecommerce.vo.mall.ApproveBillVO;
import com.desksoft.ecommerce.vo.mall.DemandHVO;
import com.desksoft.ecommerce.vo.mall.MallMessageVO;
import com.desksoft.ecommerce.vo.mall.PayDefineVO;
import com.desksoft.ecommerce.vo.mall.PayInfoVO;
import com.desksoft.ecommerce.vo.mall.VipCardVO;

/***************************************
 * <pre>
 * 版权所有：杭州迪科软件 保留所有权利
 * 创建日期: 2012-7-3
 * 创建作者：rq
 * 文件名称：IPaymentService.java
 * 版本：1.0
 * 功能：
 * 最后修改时间：2012-7-3
 * 修改记录：
 * </pre>
 *****************************************/
public interface IPaymentService {

	/**
	 * 获取订单信息
	 * 
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<DemandHVO> getCarriageInfo(DemandHVO demandHVO);

	/**
	 * 延期支付处理
	 * 
	 * @return
	 */
	public ServiceResult<MallMessageVO> delayPaymentManager(DemandHVO demandHVO, Clientinfo clientinfo );

	/**
	 * 第三方支付
	 * 
	 * @return
	 */
	public ServiceResult<Map<String, Object>> thirdPartyPay(
			PayInfoVO payInfoVO);

	/**
	 * 订单支付
	 * 
	 * @param payInfoVO
	 * @return
	 */
	public ServiceResult<Map<String, Object>> orderPay(PayInfoVO payInfoVO);
	
	
	/**
	 * 获取选项卡PayDefine配置的数据
	 * @return
	 */
	public ServiceResult<List<PayDefineVO>> getPayRequestInfo();
	
	/**
	 *  获取2c订单信息
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<DemandHVO> select2cDemandhBillno(DemandHVO demandHVO);
	
	
	/**
	 * 获取2c账户余额和返现余额
	 * @param vipCardVO
	 * @return
	 */
	public ServiceResult<VipCardVO> selAccount(VipCardVO vipCardVO);
	
	/**
	 * 获取用户的支付密码
	 * @param cardno
	 * @return
	 */
	public ServiceResult<String> selVipCardExtPwd(String cardno);
	
	
	/**
	 * 获取websettings注册相关参数
	 * @param registryQryVO
	 * @return
	 */
	public ServiceResult<List<RegistryVO>> getRegistriesByKey(RegistryQryVO registryQryVO);
	
	
	/**
	 * 获取注册相关参数
	 * @param registryQryVO
	 * @return
	 */
	public ServiceResult<RegistryVO> getRegistryByKeyAndVal(RegistryQryVO registryQryVO);
	
	/**
	 * 添加超频,超时订单申请延期支付
	 * @param approveBillVO
	 * @return
	 */
	public ServiceResult<Boolean> setApproveBill(ApproveBillVO approveBillVO);
	
	/**
	 * 获取订单是否已经延期支付
	 * @param approveBillVO
	 * @return
	 */
	public ServiceResult<List<ApproveBillVO>> selectApproveBillDisAgree(ApproveBillVO approveBillVO);
	
	/**
	 *  获取2b订单信息
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<DemandHVO> select2bDemandhBillno(DemandHVO demandHVO);
	
	
	/**
	 * 订单支付B2B
	 * 
	 * @param payInfoVO
	 * @return
	 */
	public ServiceResult<Map<String, Object>> orderPayB2B(PayInfoVO payInfoVO);
}
